b737a232d34b1ccdb399fdc2147106f7eeff6615,src/main/java/com/steelbridgelabs/oss/neo4j/structure/Neo4JVertex.java,Neo4JVertex,edges,#Direction#String#,370

Before Change


                // create string builder
                StringBuilder builder = new StringBuilder();
                // match clause
                builder.append("MATCH ").append(matchPattern("n", "id")).append("-[r").append(labels.length == 1 ? ":`" + labels[0] + "`" : "").append(!partition.isEmpty() ? "]->(m:" + processLabels(partition, false) + ")" : "]->(m)");
                // edge ids already in memory
                List<Object> identifiers = outEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
                // process where clause
                processEdgesWhereClause(labels, identifiers, "r", builder, parameters);
                // return
                builder.append(" return n, r, m");
                // create statement
                Statement statement = new Statement(builder.toString(), parameters);
                // execute command
                Stream<Edge> query = session.edges(statement);
                // edges in memory plus the ones in database (return copy since edges can be deleted in the middle of the loop)
                Iterator<Edge> result = Stream.concat((labels.length != 0 ? outEdges.stream().filter(edge -> set.contains(edge.label())) : outEdges.stream()).map(edge -> (Edge)edge), query)
                    .collect(Collectors.toList())
                    .iterator();
                // after this line it is safe to update loaded flag
                outEdgesLoaded = labels.length == 0;
                // return iterator
                return result;
            }
            // edges in memory (return copy since edges can be deleted in the middle of the loop)
            return outEdges.stream().filter(edge -> labels.length == 0 || set.contains(edge.label()))
                .map(edge -> (Edge)edge)
                .collect(Collectors.toList())
                .iterator();
        }
        // in edges
        if (direction == Direction.IN) {
            // check we have all edges in memory
            if (!inEdgesLoaded) {
                // create string builder
                StringBuilder builder = new StringBuilder();
                // match clause
                builder.append("MATCH ").append(matchPattern("n", "id")).append("<-[r").append(labels.length == 1 ? ":`" + labels[0] + "`" : "").append(!partition.isEmpty() ? "]-(m:" + processLabels(partition, false) + ")" : "]-(m)");
                // edge ids already in memory
                List<Object> identifiers = inEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
                // process where clause
                processEdgesWhereClause(labels, identifiers, "r", builder, parameters);
                // return
                builder.append(" RETURN n, r, m");
                // create statement
                Statement statement = new Statement(builder.toString(), parameters);
                // execute command
                Stream<Edge> query = session.edges(statement);
                // edges in memory plus the ones in database (return copy since edges can be deleted in the middle of the loop)
                Iterator<Edge> result = Stream.concat((labels.length != 0 ? inEdges.stream().filter(edge -> set.contains(edge.label())) : inEdges.stream()).map(edge -> (Edge)edge), query)
                    .collect(Collectors.toList())
                    .iterator();
                // after this line it is safe to update loaded flag
                inEdgesLoaded = labels.length == 0;
                // return iterator
                return result;
            }
            // edges in memory (return copy since edges can be deleted in the middle of the loop)
            return inEdges.stream().filter(edge -> labels.length == 0 || set.contains(edge.label()))
                .map(edge -> (Edge)edge)
                .collect(Collectors.toList())
                .iterator();
        }
        // check we have all edges in memory
        if (!outEdgesLoaded || !inEdgesLoaded) {
            // create string builder
            StringBuilder builder = new StringBuilder();
            // match clause
            builder.append("MATCH ").append(matchPattern("n", "id")).append("-[r").append(labels.length == 1 ? ":`" + labels[0] + "`" : "").append(!partition.isEmpty() ? "]-(m:" + processLabels(partition, false) + ")" : "]-(m)");
            // edge ids already in memory
            List<Object> identifiers = Stream.concat(outEdges.stream(), inEdges.stream()).map(Neo4JEdge::id).collect(Collectors.toList());
            // process where clause

After Change


                // create string builder
                StringBuilder builder = new StringBuilder();
                // match clause
                builder.append("MATCH ").append(matchPattern("n", "id")).append("<-[r").append(set.stream().map(label -> ":`" + label + "`").collect(Collectors.joining("|"))).append("]-(m").append(processLabels(Collections.emptySet(), true, false)).append(")");
                // edge ids already in memory
                List<Object> identifiers = inEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
                // process where clause
                processEdgesWhereClause("m", identifiers, "r", builder, parameters);
                // return
                builder.append(" RETURN n, r, m");
                // create statement
                Statement statement = new Statement(builder.toString(), parameters);
                // execute command
                Stream<Edge> query = session.edges(statement);
                // edges in memory plus the ones in database (return copy since edges can be deleted in the middle of the loop)
                Iterator<Edge> result = Stream.concat((labels.length != 0 ? inEdges.stream().filter(edge -> set.contains(edge.label())) : inEdges.stream()).map(edge -> (Edge)edge), query)
                    .collect(Collectors.toList())
                    .iterator();
                // after this line it is safe to update loaded flag
                inEdgesLoaded = labels.length == 0;
                // return iterator
                return result;
            }
            // edges in memory (return copy since edges can be deleted in the middle of the loop)
            return inEdges.stream().filter(edge -> labels.length == 0 || set.contains(edge.label()))
                .map(edge -> (Edge)edge)
                .collect(Collectors.toList())
                .iterator();
        }
        // check we have all edges in memory
        if (!outEdgesLoaded || !inEdgesLoaded) {
            // create string builder
            StringBuilder builder = new StringBuilder();
            // match clause
            builder.append("MATCH ").append(matchPattern("n", "id")).append("-[r").append(set.stream().map(label -> ":`" + label + "`").collect(Collectors.joining("|"))).append("]-(m").append(processLabels(Collections.emptySet(), true, false)).append(")");
            // edge ids already in memory
            List<Object> identifiers = Stream.concat(outEdges.stream(), inEdges.stream()).map(Neo4JEdge::id).collect(Collectors.toList());
            // process where clause
            processEdgesWhereClause("m", identifiers, "r", builder, parameters);
            // return
            builder.append(" RETURN n, r, m");
            // create statement